home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 2 / BBS in a box - Trilogy II.iso / Files / Game / T / Tickle / Tickle.Txt < prev    next >
Encoding:
Text File  |  1987-03-19  |  3.4 KB  |  168 lines  |  [TEXT/EDIT]

  1. { Tickle, © Joseph Casazza, 1986 }
  2.  
  3. PROGRAM tickle;
  4.  
  5.     USES
  6.         SpeechIntf;
  7.  
  8.     CONST
  9.         AppleMenuId = 1;
  10.         MyMenuId = 10;
  11.         aboutid = 3000;
  12.  
  13.     VAR
  14.         Event : EventRecord;
  15.         thehandle, OldMenu, theteehee : Handle;
  16.         AppleMenu, MyMenu : MenuHandle;
  17.         speechh : SpeechHandle;
  18.         anerr : SpeechErr;
  19.         dWindow, WhichWindow : WindowPtr;
  20.         thedlog : dialogptr;
  21.         dRecord : WindowRecord;
  22.         quit : Boolean;
  23.         drect : rect;
  24.         MenuSelected : longint;
  25.         ClickRgn, theMenuId, theItem, dummy, ditem, al, z : Integer;
  26.         nameholder, titlestr, parstr : str255;
  27.  
  28.     PROCEDURE talkalert;
  29.     BEGIN
  30.         al := 0;
  31.         ParamText(parstr, '', '', '');
  32.         al := StopAlert(1, NIL);
  33.         quit := true;
  34.     END;
  35.  
  36.     PROCEDURE speakit;
  37.     BEGIN
  38.         anerr := 0;
  39.         SpeechPitch(speechh, 440, NoChange);
  40.         theteehee := GetResource('PHNM', 300);
  41.         anerr := MacinTalk(speechh, theteehee);
  42.         IF anerr <> 0 THEN
  43.             BEGIN
  44.                 parstr := 'Error reading phonemes.';
  45.                 talkalert;
  46.             END;
  47.     END;
  48.  
  49.     PROCEDURE showabout;
  50.     BEGIN
  51.         thedlog := getnewdialog(aboutid, NIL, pointer(-1));
  52.         modaldialog(NIL, ditem);
  53.         disposdialog(thedlog);
  54.     END;
  55.  
  56.     PROCEDURE printmsg;
  57.     BEGIN
  58.         MoveTo(30, 70);
  59.         DrawString('I am very ticklish.  Touch my keys to tickle me!');
  60.     END;
  61.  
  62.     PROCEDURE maineventloop;
  63.     BEGIN
  64.         quit := false;
  65.         InitCursor;
  66.         REPEAT
  67.             FlushEvents(everyEvent, 0);
  68.             REPEAT
  69.                 systemtask;
  70.             UNTIL GetNextEvent(everyevent, Event);
  71.             BEGIN
  72.                 CASE Event.What OF
  73.                     MouseDown : 
  74.                         BEGIN
  75.                             ClickRgn := FindWindow(Event.Where, WhichWindow);
  76.                             CASE ClickRgn OF
  77.                                 InMenuBar : 
  78.                                     BEGIN
  79.                                         MenuSelected := MenuSelect(Event.Where);
  80.                                         theMenuId := HiWord(MenuSelected);
  81.                                         theItem := LoWord(MenuSelected);
  82.                                         CASE theMenuId OF
  83.                                             AppleMenuId : 
  84.                                                 IF theitem < 3 THEN
  85.                                                     BEGIN
  86.                                                         showabout;
  87.                                                     END
  88.                                                 ELSE
  89.                                                     BEGIN
  90.                                                         getitem(Applemenu, theitem, nameholder);
  91.                                                         dummy := opendeskacc(nameholder);
  92.                                                     END;
  93.                                             mymenuid : 
  94.                                                 BEGIN
  95.                                                     IF theItem = 1 THEN
  96.                                                         BEGIN
  97.                                                             quit := true;
  98.                                                         END;
  99.                                                 END;
  100.                                             OTHERWISE
  101.                                         END;
  102.                                         hilitemenu(0);
  103.                                     END;
  104.                                 insyswindow : 
  105.                                     BEGIN
  106.                                         systemclick(event, whichwindow);
  107.                                     END;
  108.                                 inContent : 
  109.                                     BEGIN
  110.                                         IF whichwindow <> frontwindow THEN
  111.                                             BEGIN
  112.                                                 selectwindow(whichwindow);
  113.                                             END;
  114.                                     END;
  115.                                 OTHERWISE
  116.                             END;
  117.                         END;
  118.                     keyDown : 
  119.                         BEGIN
  120.                             speakit;
  121.                         END;
  122.                     autoKey : 
  123.                         BEGIN
  124.                             speakit;
  125.                         END;
  126.                     UpdateEvt : 
  127.                         BEGIN
  128.                             BeginUpdate(dWindow);
  129.                             printmsg;
  130.                             EndUpdate(dWindow);
  131.                         END;
  132.                     OTHERWISE
  133.                 END;
  134.             END;
  135.         UNTIL quit;
  136.         closewindow(dWindow);
  137.         SpeechOff(speechh);
  138.     END;
  139.  
  140.     PROCEDURE miscinit;
  141.     BEGIN
  142.         FlushEvents(everyEvent, 0);
  143.         OldMenu := GetMenuBar;
  144.         ClearMenuBar;
  145.         AppleMenu := getmenu(AppleMenuId);
  146.         InsertMenu(AppleMenu, 0);
  147.         addresmenu(AppleMenu, 'DRVR');
  148.         MyMenu := NewMenu(MyMenuId, 'File');
  149.         AppendMenu(MyMenu, 'Quit');
  150.         InsertMenu(MyMenu, 0);
  151.         DrawMenuBar;
  152.         SetRect(dRect, 100, 50, 450, 200);
  153.         dWindow := NewWindow(@dRecord, dRect, 'untitled ', true, dBoxProc, NIL, false, longint(0));
  154.         SetPort(dWindow);
  155.         printmsg;
  156.         anerr := 0;
  157.         anerr := SpeechOn(noReader, speechh);
  158.         IF anerr <> 0 THEN
  159.             BEGIN
  160.                 parstr := 'MacinTalk cannot be opened.';
  161.                 talkalert;
  162.             END;
  163.     END;
  164.  
  165. BEGIN
  166.     miscinit;
  167.     maineventloop;
  168. END.